OutOfMemoryError 和 StackOverflowError
全部标签 这个问题在这里已经有了答案:CantheJVMrecoverfromanOutOfMemoryErrorwithoutarestart(7个答案)关闭9年前。发生OutOfMemoryError后,JVM会自行终止吗?如果不是那么为什么?它会尝试取回资源吗?还是有其他原因?
我试图研究Java中的不同异常并遇到了OutOfMemoryError,我想在工作中看到它,所以我编写了以下程序来创建无限对象,方法是在无限循环中创建它们。该程序确实进入无限循环,它不会抛出OutOfMemoryError异常。classTest{publicstaticvoidmain(String...args){while(true){Integeri=newInteger();}}} 最佳答案 您走在正确的轨道上。您唯一缺少的是垃圾收集的概念。该程序实际上创建了无限Integer对象,但在第一次迭代之后,在前一次迭代中创建的
我尝试使用Mockito来模拟数据库池(仅用于检索数据),但是在运行性能测试时会在一段时间内检索许多模拟连接,它会耗尽内存。这是一个简化的自包含代码,它在我的机器上大约150,000次循环迭代后抛出一个OutOfMemoryError(尽管似乎没有任何东西被全局保存,而且一切都应该是垃圾回收的)。我做错了什么?importstaticorg.mockito.Mockito.when;importjava.sql.Connection;importorg.mockito.Mock;importorg.mockito.MockitoAnnotations;publicclassTest1{
我在VPS上安装了tomcat网络应用程序,而tomcat有时(大约每月一次)崩溃并在catalina.out中出现以下错误:JavaHotSpot(TM)64-BitServerVMwarning:Exceptionjava.lang.OutOfMemoryErroroccurreddispatchingsignalSIGTERMtohandler-theVMmayneedtobeforciblyterminated.以下是有关我的配置的一些详细信息:VPS:debian-5.0-x86_64内存:2.5GB,虚拟处理器:8硬盘:60gb硬盘-70%免费Tomcat7.0java版本
我在内存中有一个相当大的Java对象,它代表一个图,有顶点和边。每个顶点都有一个ArrayList它连接到的其他顶点(并且有一个HashMap数据结构以及用于其他目的)。该图可以有几千个顶点和更多的边。当尝试使用Java的内置序列化(implementsSerializable等)对图形进行序列化时,我总是会遇到StackOverflowError。将图形的其他属性设置为transient无济于事,将堆栈大小设置得更大(即-Xss1g或-Xss512m也无济于事).我不认为我需要制作自定义的writeObject方法,因为ArrayList和HashMap已经有自己的实现,称为序列化后
我们有一个在AppEngine上运行并使用Spring框架的应用程序。最近我们添加了一些基于AOP的新功能。我们决定使用@AspectJ样式,因此我们添加了。进入我们基于XML的配置并实现各个方面。在开发服务器上一切正常,但是,当部署到云环境时,我们得到java.lang.StackOverflowError每次初始化应用程序时。无法创建导致报错的bean是注解为@Configuration的配置类注解。似乎基本上任何配置bean都可能导致错误。下面你可以看到相应的堆栈跟踪。org.springframework.web.context.ContextLoaderinitWebAppl
有没有一种更干净、更快速的方法来做到这一点:BufferedReaderinputReader=newBufferedReader(newInputStreamReader(context.openFileInput("data.txt")));StringinputString;StringBuilderstringBuffer=newStringBuilder();while((inputString=inputReader.readLine())!=null){stringBuffer.append(inputString+"\n");}text=stringBuffer.toS
下面是我偶然发现的一段代码的最小可验证示例。packagetest_package;importjava.util.function.Predicate;publicclassTestClass{publicstaticfinalStringCONST_STR="some_data"+getMoreData(e->e.getId()==3);privatestaticStringgetMoreData(Predicatep){StringBuildersb=newStringBuilder();for(TestEnume:TestEnum.values()){if(p.test(e))
问题:我运行mvncleaninstall-DskipTest并得到[ERROR]Thesystemisoutofresources.[ERROR]Consultthefollowingstacktracefordetails.[ERROR]java.lang.OutOfMemoryError:Javaheapspace更多信息:操作系统:OSX(16GB内存)Java配置:位于~/Libraries/Preferences/IntelliJIdea13/idea.vmoptins和Applications/IntelliJ\Idea\13.app/bin/idea.vmoptions
这个问题在这里已经有了答案:Whatisthemaximumdepthofthejavacallstack?(5个答案)关闭9年前。根据Oracle,一个StackOverflowError是:Thrownwhenastackoverflowoccursbecauseanapplicationrecursestoodeeply.我知道什么是递归,通常递归函数如果没有正确终止,就会导致StackOverflowError。为了检查在StackOverflowError被抛出之前发生的递归调用的数量,我写了这段代码:packageErrorCases;publicclassStackOve